perm filename 2BYN.SAI[PUZ,HPM] blob
sn#163929 filedate 1975-06-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "2 BY N"
C00004 00003 SETFORMAT(0,3)
C00007 ENDMK
C⊗;
BEGIN "2 BY N"
PRELOAD_WITH 0,8,36,13,24,5,23,28,35,6,19,15,34,10,40,22,17,
30,14,38,26,7,29,16,20,9,39;
INTEGER ARRAY AL["@":"Z"];
INTEGER ARRAY QAL["A":"Z"];
INTEGER I,J,K,L,M,N,O,FL,SL,BEST,LEN,TRIAL; STRING WD1,WD2,WORD;
BOOLEAN ARRAY EXS["A":"Z","A":"Z"];
COMMENT set up existence table for 2 by 2 words;
FOR J←"A" STEP 1 UNTIL "Z" DO
BEGIN
INTEGER BRK,FLG; BOOLEAN EOF;
OPEN(1,"DSK",0,2,0,30,BRK,EOF);
LOOKUP(1,"DIC."&J&"2",FLG);
SETBREAK(1,'12," "&'15&'13&'14&"`"&"'","INS");
FOR I←"A" STEP 1 UNTIL "Z" DO EXS[J,I]←FALSE;
WHILE ¬EOF DO
BEGIN
WORD←INPUT(1,1);
IF LENGTH(WORD)=2∧WORD=J THEN EXS[J,WORD[2 TO 2]]←TRUE;
END;
CLOSE(1);
END;
COMMENT now rank letters by value;
FOR I←"A" STEP 1 UNTIL "Z" DO QAL[I]←I;
FOR I←"B" STEP 1 UNTIL "Z" DO FOR J←"A" STEP 1 UNTIL I-1 DO
IF AL[QAL[J]]<AL[QAL[I]] THEN QAL[J]↔QAL[I];
FOR I←"A" STEP 1 UNTIL "Z" DO OUTSTR(QAL[I]&" ");
SETFORMAT(0,3);
FOR LEN←2 STEP 1 UNTIL 6 DO
BEGIN
INTEGER BRK,FLG,WLEN; BOOLEAN EOF;
OUTSTR('15&'12&CVD(LEN)&" LETTER WORDS"&'15&'12);
BEST←0;
FOR L←"A" STEP 1 UNTIL "Z" DO
BEGIN
FL←QAL[L];
OPEN(1,"DSK",0,2,0,30,BRK,EOF);
LOOKUP(1,"TOPS."&FL&CVS(LEN),FLG);
SETBREAK(1,'12," "&'15&'13&'14&"'"&"`","INS");
WHILE ¬EOF DO IF LENGTH(WD1←WORD←INPUT(1,1))=LEN∧WORD=FL THEN
FOR M←"A" STEP 1 UNTIL "Z" DO IF EXS[FL,SL←QAL[M]] THEN
BEGIN
INTEGER BRK,FLG; BOOLEAN EOF2;
OPEN(2,"DSK",0,2,0,30,BRK,EOF2);
LOOKUP(2,"TOPS."&SL&CVS(LEN),FLG);
SETBREAK(2,'12," "&'15&'13&'14&"'"&"`","INS");
WHILE ¬EOF2 DO IF LENGTH(WD2←WORD←INPUT(2,1))=LEN∧WORD=SL THEN
BEGIN
I←1;
WHILE I≤LEN∧EXS[WD1[I TO I],WD2[I TO I]] DO I←I+1;
IF I>LEN THEN
BEGIN
INTEGER TRIAL;
TRIAL←0; FOR I←1 STEP 1 UNTIL LEN DO
TRIAL←TRIAL+AL[WD1[I TO I]]+AL[WD2[I TO I]];
IF TRIAL≥BEST THEN OUTSTR(WD1&'15&'12&WD2&" -- "&
CVS(BEST←TRIAL)&" MERIT "&CVF(TRIAL/(2*LEN+2))&
'15&'12&'12&'12);
END;
END;
CLOSE(2);
END;
CLOSE(1);
END;
END;
END;